package demo;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: syyyy
 * Date: 2025-07-11
 * Time: 16:42
 */
public class Test {
    public static void main(String[] args) {
//        char[] ch=new char[]{'a','b','c'};
//        String s1=new String(ch);
//        s1.intern();
//
//        String s2="abc";
//
//        System.out.println(s1==s2);
        //这个intern就是强制将s1的引用放入了常量池中，这样s2就可以直接指向s1的引用

          String s1=new String("abc");
          String s2=new String("abc");
          System.out.println(s1==s2);//false
        //目前的理解：他们本身的引用不一样

          String s3="abc";
          String s4="abc";
        System.out.println(s3==s4);//true
        //当使用双引号直接定义字符串时，如String str = "hello";
        // Java 会首先检查字符串常量池，如果常量池中不存在该字符串，
        // 就会在常量池中创建一个新的字符串对象，然后让变量str指向这个常量池中的对象,
        // 如果常量池中已经存在该字符串，那么str直接引用常量池中的字符串对象。

    }
}
